/**
 * ZHU framework. Copyright 2012-, all rights reserved.
 *
 * $Id: PeriodConversation.java 30 2012-08-28 07:55:17Z zhuxiaopeng $
 * $Revision: 30 $
 * $Date: 2012-08-28 15:55:17 +0800 (二, 2012-08-28) $
 * $Author: zhuxiaopeng $
 */
package daily.web.excel;

import java.util.*;

import javax.annotation.*;
import javax.enterprise.context.*;
import javax.faces.model.*;
import javax.inject.*;

import daily.util.*;
import daily.web.*;

/**
 * <p>
 * </p>
 * 
 * @author $Author: zhuxiaopeng $
 * @version $Revision: 30 $ - $Date: 2012-08-28 15:55:17 +0800 (二, 2012-08-28) $
 */
@Named
@ConversationScoped
public class ExcelConversation extends AbstractConversation {

	/**
	 * <h3>スレッドセーフ性</h3>
	 * <p>
	 * この変数は<code>this</code>によってGuardされる。 この変数は<code>final</code>
	 * であり、参照先がスレッドセーフであるため、スレッドセーフ性を破ることはない。
	 * この変数の参照先はスレッドセーフ<strong>ではない</strong>。
	 * </p>
	 */
	private static final long serialVersionUID = 1L;

	@PostConstruct
	private void init() {
		final Date date = new Date();
		year = DateUtils.getYear(date);
		month = DateUtils.getMonth(date) - 1;
		for (int i = year - 10; i < year; i++) {
			yearItems.add(new SelectItem(i + 1, String.format("%d年", i + 1)));
		}
		for (int i = 0; i < 12; i++) {
			monthItems.add(new SelectItem(i, String.format("%d月", i + 1)));
		}
	}

	/**
	 * @return the year
	 */
	public synchronized int getYear() {
		return year;
	}

	/**
	 * @param year
	 *            the year to set
	 */
	public synchronized void setYear(final int year) {
		this.year = year;
	}

	/**
	 * @return the month
	 */
	public synchronized int getMonth() {
		return month;
	}

	/**
	 * @param month
	 *            the month to set
	 */
	public synchronized void setMonth(final int month) {
		this.month = month;
	}

	/**
	 * @return the yearItems
	 */
	public synchronized List<SelectItem> getYearItems() {
		return yearItems;
	}

	/**
	 * @return the monthItems
	 */
	public synchronized List<SelectItem> getMonthItems() {
		return monthItems;
	}

	private int year;

	private int month;

	private final List<SelectItem> yearItems = new ArrayList<>();

	private final List<SelectItem> monthItems = new ArrayList<>();
}
